package com.lyf.boot.modules.system.entity.dto;

import com.lyf.boot.base.system.entity.SysPerm;
import com.lyf.boot.validate.group.AddGroup;
import com.lyf.boot.validate.group.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import org.hibernate.validator.constraints.Range;

import java.io.Serial;
import java.io.Serializable;

/**
 * @author Luyufan
 * @date 2023/7/7 10:58
 */
@Data
@AutoMapper(target = SysPerm.class)
public class SysPermDto implements Serializable {

    @Serial
    private static final long serialVersionUID = -3395692724846651952L;

    /**
     * 权限id
     */
    @NotNull(message = "权限id不能为空", groups = {EditGroup.class})
    private Long permId;

    /**
     * 权限名称
     */
    @NotBlank(message = "权限名称不能为空", groups = {AddGroup.class, EditGroup.class})
    private String permName;

    /**
     * 权限标识
     */
    private String permCode;

    /**
     * 路径
     */
    private String path;

    /**
     * 重定向地址
     */
    private String redirect;

    /**
     * 组件名
     */
    private String name;

    /**
     * 组件
     */
    private String component;

    /**
     * 父级权限id
     */
    private Long parentId;

    /**
     * 菜单图标
     */
    private String icon;

    /**
     * 排序值
     */
    private Integer sort;

    /**
     * 是否缓存该页面: 1:是  0:不是
     */
    private Integer keepAlive;

    /**
     * 是否固定标签页
     */
    private Integer affixTab;

    /**
     * 固定标签页排序
     */
    private Integer affixTabOrder;

    /**
     * 权限类型: 0.目录 1.菜单 2.按钮
     */
    @NotNull(message = "权限类型不能为空", groups = {AddGroup.class, EditGroup.class})
    @Range(min = 0 ,max = 2, message = "权限类型不正确")
    private Integer type;

    /**
     * 链接类型： 0.常规 1.iframe 2.外链
     */
    private Integer linkType;

    /**
     *  外链地址
     */
    private String link;

    /**
     * iframe地址
     */
    private String iframeSrc;

    /**
     * 是否在新窗口打开
     */
    private Integer openInNewWindow;

    /**
     * 状态：0.正常 1.禁用
     */
    @NotNull(message = "状态不能为空", groups = {AddGroup.class, EditGroup.class})
    @Range(min = 0 ,max = 1, message = "状态不正确")
    private Integer status;

    /**
     * 备注
     */
    private String remark;
}
